{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Processing and narrating a video with ZhipuAI GLM's visual capabilities\n",
    "\n",
    "**This tutorial is available in English and is attached below the Chinese explanation**\n",
    "\n",
    "此代码演示了如何通过视频使用 GLM 的视觉功能。 GLM-4 不直接将视频作为输入，但我们可以使用视觉和新的 128K 上下文窗口来一次性描述整个视频的静态帧。\n",
    "\n",
    "**由于模型对视频理解的能力有待提高，在这个代码中的视频理解的细节程度无法达到较高水平。**\n",
    "\n",
    "This cookbook demonstrates how to use GLM's visual capabilities with a video. GLM-4 doesn't take videos as input directly, but we can use vision and the new 128K context window to describe the static frames of a whole video at once. \n",
    "\n",
    "**Since the model's ability to understand videos needs to be improved, the level of detail of video understanding in this code cannot reach a high level. **"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "outputs": [],
   "source": [
    "import os\n",
    "os.environ[\"ZHIPUAI_API_KEY\"] = \"your api key\""
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-23T05:15:19.444102Z",
     "start_time": "2024-01-23T05:15:19.441033Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [],
   "source": [
    "from IPython.display import display, Image\n",
    "import cv2\n",
    "import base64\n",
    "from zhipuai import ZhipuAI\n",
    "client = ZhipuAI()"
   ],
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-01-23T05:15:19.781936Z",
     "start_time": "2024-01-23T05:15:19.445518Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先，我们使用 OpenCV 从包含熊和河流的自然视频中提取帧。我们将使用此视频作为 GLM 的输入\n",
    "\n",
    "First, we use OpenCV to extract frames from a nature video containing bears and a river. We'll use this video as our input to GLM."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-01-23T05:15:19.918428Z",
     "start_time": "2024-01-23T05:15:19.782832Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "374 frames read.\n"
     ]
    }
   ],
   "source": [
    "video = cv2.VideoCapture(\"data/movie.mp4\")\n",
    "base64Frames = []\n",
    "while video.isOpened():\n",
    "    success, frame = video.read()\n",
    "    if not success:\n",
    "        break\n",
    "    _, buffer = cv2.imencode(\".jpg\", frame)\n",
    "    base64Frames.append(base64.b64encode(buffer).decode(\"utf-8\"))\n",
    "video.release()\n",
    "print(len(base64Frames), \"frames read.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "展示其中视频中的一张图来验证视频读取是否正确\n",
    "\n",
    "Show a picture from the video to verify whether the video reading is correct"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-01-23T05:15:19.923850Z",
     "start_time": "2024-01-23T05:15:19.919220Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/jpeg": "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",
      "text/plain": "<IPython.core.display.Image object>"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "first_image = Image(data=base64.b64decode(base64Frames[100].encode(\"utf-8\")))\n",
    "display_handle = display(first_image, display_id=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "一旦我们有了视频帧，我们就制作提示并向 GLM 发送请求（请注意，我们不需要发送每一帧让 GLM 了解发生了什么）：\n",
    "\n",
    "Once we have the video frames, we craft our prompt and send a request to GLM (Note that we don't need to send every frame for GLM to understand what's going on):\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-01-23T05:15:19.927577Z",
     "start_time": "2024-01-23T05:15:19.925688Z"
    }
   },
   "outputs": [],
   "source": [
    "PROMPT_MESSAGES = [{\n",
    "    \"role\": \"user\",\n",
    "    \"content\": [\n",
    "        {\n",
    "            \"type\": \"text\",\n",
    "            \"text\": \"这些是我上传的视频的帧。请你根据这些视频祯，进行分析并联系图片的上下文关系，生成引人注目的视频描述。让我们开始吧\"\n",
    "        },\n",
    "        *[\n",
    "            {\n",
    "                \"type\": \"image_url\",\n",
    "                \"image_url\": {\n",
    "                    \"url\": frame\n",
    "                }\n",
    "            } for frame in base64Frames[0::50]\n",
    "        ]\n",
    "    ]\n",
    "}]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "在宁静的野生环境中，一只雄伟的棕熊踏进了清澈的河水之中。它被一群好奇的海鸥包围着，海鸥们紧密地围绕在它身边，或许是在寻找食物的机会，或许是好奇地观察这位不速之客。棕熊优雅地移动着，河水泛起涟漪，周围的草地和树木则静静地见证着这一奇妙时刻的展开。\n"
     ]
    }
   ],
   "source": [
    "params = {\n",
    "    \"model\": \"glm-4v\",\n",
    "    \"messages\": PROMPT_MESSAGES,\n",
    "    \"max_tokens\": 20000,\n",
    "    \"temperature\": 0.9,\n",
    "    \"top_p\": 1,\n",
    "}\n",
    "\n",
    "result = client.chat.completions.create(**params)\n",
    "print(result.choices[0].message.content)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-23T05:15:23.904018Z",
     "start_time": "2024-01-23T05:15:19.929580Z"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "openai",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
